package passUtil

import (
	"crypto/sha256"
	"encoding/base64"
	"log"
	"strconv"

	"go-api-template/internal/e"

	"golang.org/x/crypto/pbkdf2"
)

// MakeHashPassword 创建Hash密码
func MakeHashPassword(s string) {
	pwd := []byte(s)              // 用户设置的原始密码
	salt := []byte(e.DefaultSalt) // 盐，是一个随机字符串，每一个用户都不一样，在这里我们随机选择 "I1lrI7wqJOJZ" 作为盐
	iterations := 15000           // 加密算法的迭代次数，15000 次
	digest := sha256.New          // digest 算法，使用 sha256

	// 第一步：使用 pbkdf2 算法加密
	dk := pbkdf2.Key(pwd, salt, iterations, 32, digest)
	log.Println(string(dk))

	// 第二步：Base64 编码
	str := base64.StdEncoding.EncodeToString(dk)
	log.Println(str)

	// 第三步：组合加密算法、迭代次数、盐、密码和分割符号 "$"
	log.Println("pbkdf2_sha256" + "$" + strconv.FormatInt(int64(iterations), 10) + "$" + string(salt) + "$" + str)
}
